
//默认函数外部不能读取函数内定义的数据
// function fn1(){
//     var num = 10;
// }
// alert(num);

//一个简单的闭包
// var num = 20;
// function fn2(){
//     alert(num);
// }
// fn2()


//但可以通过闭包+作用域链实现：函数外部读取函数内定义的数据
//作用域链让num的作用域包含fn4
//闭包实现fn4读取num数据
// function fn3(){
//     var num = 30;
//     function fn4(){
//         console.log(num);
//     }
//     return fn4;
// }
// var hs4 = fn3();
// hs4();

/*
//升级用事件触发更改函数内数据
function fn3(){
    var num = 0;
    function fn4(flag){
       num++;
       document.getElementById(flag).innerText=num;
    }
    return fn4;
}
//调用外部函数重新计算数据
var hs4 = fn3();
var hs5 = fn3();

function test1(){
    hs4('one');
}
function test2(){
    hs5('two');
}
*/
var obj1 = [
    {
        'temp':'hehe'
    },
    {
        'temp':'hehe'
    }
]
var obj2 ={
    'stuNo':'1001',
    'stuName':'zhangsan'
}

//for
// for(var i=0; i<obj1.length; i++){
//     console.log(obj1[i])
// }
// console.log("--------------------------");
// for(var i=0; i<obj2.length; i++){
//     console.log(obj2[i])
// }

//for-in
// for(var i in obj1){
//     console.log(obj1[i])
// }
// console.log("--------------------------");
// for(var i in obj2){
//     console.log(obj2[i])
// }

//for-of
// for(var i of obj1){
//     console.log(i)
// }
// console.log("--------------------------");
// for(var i of obj2){
//     console.log(i)
// }

//forEach
// obj1.forEach(function(item,index){
//     console.log(item, index);
// })
// console.log("--------------------------");
// obj2.forEach(function(item,index){
//     console.log(item, index);
// })

//map
obj1.map(function(item,index,array){
    console.log(item, index,array);
    //return item * 2;
})
console.log("--------------------------");
obj2.map(function(item,index,array){
    console.log(item, index,array);
    //return item * 2;
})